// #include<iostream>
// using namespace std;
// //如何实现通用的交换函数
// // void swap(int& a,int& b)
// // {
// //     int tmp = a;
// //     a = b;
// //     b = tmp;
// // }

// // //使用函数重载虽然可以实现泛型编程 -> 代码的复用率是比较低的
// // int main()
// // {
// //     int a = 10,b = 5;
// //     swap(a,b);
// //     cout << a <<" "<< b<<'\n';
// //     return 0;
// // }

// //如何解决上述问题：模板
// //模板的原理：需要什么，编译器帮助你实例化出你需要函数或者类

// //重点：函数模板代表了一个函数家族，根据实参推演生成出与实参匹配的函数或者类

// //template  模板的声明

// template<typename T>
// //typename 是定义模板参数的关键字
// void Swap(T& left,T& right)
// {
//     T tmp = left;
//     left = right;
//     right = tmp;
// }
// int main()
// {
//     double d1 = 3.14,d2 = 3.27;
//     Swap(d1,d2);
//     cout << d1 <<" "<< d2<<'\n';
//     return 0;
// }


// //模板是在编译的时候生成具体代码：
